package Htp;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;

/*
 *  HttpServletRquest类有什么作用?
 *  每次只要有请求进入Tomcat服务器，Tomcat服务器就会把请求过来的http协议信息
 *  解释好封装到Request对象中，然后传递到sevice方法(doGet,doPost)中给我们使用
 *  我们可以通过HttpServletRequest对象，获取到所有请求的信息
 *
 *  常用方法有：
 *  getRequestURI();    获取请求资源路劲
 *  getRequestURL();    获取请求的统一资源定位符（绝对路径）
 *  getRemoteHost();    获取客户端的ip地址
 *  getHeader();        获取请求头
 *  getParameter();     获取请求参数
 *  getParameterValues();     获取请求的参数（多个值的时候使用）
 *  getMethod();        获取请求的方式GET或POST
 *  setAttibute();      设置域数据
 *  getAttibute();      获取域数据
 *  getRequestDispatcher();   获取请求转发对象
 *
 *   ********************
 *  setCharacterEncoding()  设置编码集方法  //一般在用post方法提交的时候提交
 *
 *
 *
 *
 *
 */
public class HttpServletRequestTest extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置编码集为UTF-8解决中文乱码问题
//        req.setCharacterEncoding("UTF-8");
//        getRequestURI();    获取请求资源路劲
        System.out.println(req.getRequestURI());
//        getRequestURL();    获取请求的统一资源定位符（绝对路径）
        System.out.println(req.getRequestURL());
//        getRemoteHost();    获取客户端的ip地址
        System.out.println(req.getRemoteHost());
        //getMethod();        获取请求的方式GET或POST
        System.out.println(req.getMethod());
        //getParameter();     获取请求参数 获取单一数据的时候
        System.out.println(req.getParameter("name"));
        System.out.println(req.getParameter("password"));
        System.out.println(req.getParameter("hobby"));
        //getParameterValues();     获取请求的参数（多个值的时候使用） 返回值是一个String类型的数组
        String[] hobbies = req.getParameterValues("hobby");
        System.out.println(Arrays.asList(hobbies)); //也可以用这种方法进行输出
        for(String s : hobbies){
            System.out.println(s);
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置编码集为UTF-8解决中文乱码问题
        req.setCharacterEncoding("utf-8");
        System.out.println(req.getParameter("name"));
        System.out.println(req.getParameter("password"));
        System.out.println(req.getParameter("hobby"));
        //getParameterValues();     获取请求的参数（多个值的时候使用） 返回值是一个String类型的数组
        String[] hobbies = req.getParameterValues("hobby");
        System.out.println(Arrays.asList(hobbies)); //也可以用这种方法进行输出
        for(String s : hobbies){
            System.out.println(s);
        }
    }
}
